package cur.nature.admin.model.vo;

import cur.nature.framework.mvc.base.BaseVO;
import cur.nature.framework.mvc.http.RequestObject;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
  * 用户信息 VO
  * 作者：Auto Generate By wujian
  * 生成日期：2023-07-10 21:42:14
  */
@Data
@Schema(description = "用户信息 模型", name = "Admin_UserVO")
public class Admin_UserVO extends BaseVO {
        @Schema(description = "姓名")
        private String  name;

        @Schema(description = "头像")
        private String  logo;
      
        @Schema(description = "性别")
        private Integer  sex;
      
        @Schema(description = "用户状态")
        private Integer  state;
      
        @Schema(description = "证件类型")
        private Integer  idType;
      
        @Schema(description = "用户手机号码")
        private String  mobile;
      
        @Schema(description = "邮件")
        private String  email;
      
        @Schema(description = "证件号码")
        private String  idNo;
      
        @Schema(description = "帐号名称")
        private String  loginName;
      
        @Schema(description = "帐号密码")
        private String  loginPwd;
      
        @Schema(description = "公共唯一标识")
        private String  wxOpenId;

        @Schema(description = "唯一标识")
        private String  wxUnionId;

        @Schema(description = "用户头像")
        private  String  wxImageUrl;

        @Schema(description = "用户昵称")
        private String  wxNickName;

        @Schema(description = "会话密钥")
        private String  wxSessionKey;
      
        @Schema(description = "微信用户信息")
        private String  wxUserInfo;

        @Schema(description = "部门列表")
        private List<Long> deptId;

        @Schema(description = "部门")
        private String deptName;

        @Schema(description = "角色列表")
        private List<Long> roleId;

        @Schema(description = "角色")
        private String roleName;

    @Data
    @Schema(description = "列表查询参数", name = "Admin_UserVO.list_Param")
    public static class list_Param extends RequestObject.PageRequest {
        @Schema(description = "关键字")
        private String keyword;
    }

    @Data
    @Schema(description = "根据关键字查询参数", name = "Admin_UserVO.listByKeyword_Param")
    public static class listByKeyword_Param extends RequestObject {
        @Schema(description = "关键字")
        private String keyword;
        @Schema(description = "用户id列表")
        private List<String> userIdList;
    }
    @Data
    @Schema(description = "根据关键字查询结果", name = "Admin_UserVO.listByKeyword_Res")
    public static class listByKeyword_Res extends RequestObject {
        @Schema(description = "主键")
        private String id;

        @Schema(description = "姓名")
        private String  name;

        @Schema(description = "用户手机号码")
        private String  mobile;


    }

    public static class login {
         @Data
         @Schema(description =  "登录查询参数", name = "Admin_UserVO.login.Param")
        public static class Param extends RequestObject{
             @Schema(description =  "token")
            private String token;
             @Schema(description =  "用户名")
            private String userName;
             @Schema(description =  "密码")
            private String password;
             @Schema(description =  "校验码")
            private String code;
             @Schema(description =  "是否生成session")
            private boolean crtSession = false;
             @Schema(description =  "是否返回资源")
             private boolean crtResource = false;
        }
        @Data
         @Schema(description =  "登录查询返回值", name = "Admin_UserVO.login.Result")
        public static class Result {
             @Schema(description =  "flag")
            private Boolean flag;
             @Schema(description =  "token")
            private String token;
             @Schema(description =  "menuList")
            private List<String> menuList;
             @Schema(description =  "userInfos")
            private Admin_UserVO userInfos;
        }
    }

    public static class logout {
        @Data
         @Schema(description =  "登出查询参数", name = "Admin_UserVO.logout.Param")
        public static class Param extends RequestObject{
             @Schema(description =  "用户名")
            private String userName;
             @Schema(description =  "密码")
            private String password;
             @Schema(description =  "校验码")
            private String code;
        }
        @Data
         @Schema(description =  "登出查询返回值", name = "Admin_UserVO.logout.Result")
        public static class Result {
             @Schema(description =  "flag")
            private Boolean flag;
             @Schema(description =  "token")
            private String token;
             @Schema(description =  "menuList")
            private List<String> menuList;
             @Schema(description =  "userInfos")
            private Map<String,Object> userInfos;
        }
    }
}

